package cn.net.Singleton;
/*单例设计模式一：饿汉式*/
public class TestSingle1 {
    public static void main(String[] args) {
        //通过【类名调用】静态的getSingle()方法来获取对象
        MySingle single1 = MySingle.getSingle();
        MySingle single2 = MySingle.getSingle();
        //测试两个引用类型的变量是否相等
        System.out.println(single1==single2);//true;==比较的是地址值
        System.out.println(single1);
        System.out.println(single2);
    }
}
//1.创建自己的单例程序:无法在外创建本类对象.
class MySingle{
    private MySingle(){//私有化构造方法--阻止了外界随意调用并实例化对象
    }
    //2.【在类的内部,创建本类对象,并且私有化】
    //本资源也需要使用static修饰,因为静态方法getSingle()只能调用静态对象资源
        private static   MySingle single = new MySingle();
    // //3.对外提供一个公共的全局访问点
    public static  MySingle getSingle(){//【static静态资源】是为了外部可以通过【类名直接调用本方法】
            return single;// 返回创建好的对象到调用位置,谁调用这个方法,谁就能拿到返回的single对象
    }
/**解决方案：将公共方法设置成公共静态方法，这样可以被类名直接调用
 注意：本类的返回对象也需设置成静态，因为静态方法只能调用静态对象。**/

}
